package com.hongye.house.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hongye.common.core.annotation.Excel;
import com.hongye.common.core.web.domain.BaseEntity;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 房源列表对象 house_resource
 * 
 * @author fafa
 * @date 2025-02-14
 */
public class HouseResource extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 房源编号 */
    private Long houseId;

    /** 房源名称 */
    @NotNull(message = "房源名称不能为空")
    @Excel(name = "房源名称")
    private String houseName;

    /** 房源价格 */
    @Excel(name = "房源价格")
    @Size(min = 1,message = "价格格式不正确")
    private BigDecimal housePrice;

    /** 房源类型（公寓,商铺,写字楼,二手房,出租房） */
    @Excel(name = "房源类型", readConverterExp = "公=寓,商铺,写字楼,二手房,出租房")
    @NotNull(message = "房源类型不能为空")
    private String houseType;

    /** 房源户型 */
    @Excel(name = "房源户型")
    @NotNull(message = "房源户型不能为空")
    private String houseTypes;

    /** 房源面积 */
    @Excel(name = "房源面积")
    @Size(min = 1,message = "面积格式不正确")
    private BigDecimal houseArea;

    /** 小区ID */
    @Excel(name = "小区ID")
    private Long plotId;

    /** 房源详细地址 */
    @Excel(name = "房源详细地址")
    @NotNull(message = "房源详细地址不能为空")
    private String address;

    /** 房源状态 */
    @Excel(name = "房源状态")
    private String houseStatus;

    /** 房主id */
    @Excel(name = "房主id")
    private Integer ownerId;

    /** 房源介绍 */
    @Excel(name = "房源介绍")
    private String introduce;

    /** 配套设施（如客梯,货梯,中央空调,停车位,网络,暖气,扶梯,天然气等） */
    @Excel(name = "配套设施", readConverterExp = "如=客梯,货梯,中央空调,停车位,网络,暖气,扶梯,天然气等")
    private String facilities;

    /** 地区编码 */
    @Excel(name = "地区编码")
    private String areaCode;

    /** 短租开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "短租开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date rentStartDate;

    /** 短租结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "短租结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date rentEndDate;

    /** 预览图 */
    @Excel(name = "预览图")
    private String previewImages;

    /** 排序方式 */
    @Excel(name = "排序方式")
    private String sortType;

    /** 距离 */
    @Excel(name = "距离")
    private BigDecimal distance;

    /** 楼层房号 */
    @Excel(name = "楼层房号")
    private String floorRoomNumber;

    /** 短租均价 */
    @Excel(name = "短租均价")
    private BigDecimal rentAveragePrice;

    /** 购买一口价 */
    @Excel(name = "购买一口价/租房一口价")
    private BigDecimal purchasePrice;

    /** 商铺租金一口价 */
    @Excel(name = "商铺租金一口价")
    private BigDecimal shopRentPrice;

    /** 逻辑删除标志（0：未删除，1：已删除） */
    @Excel(name = "逻辑删除标志", readConverterExp = "0=：未删除，1：已删除")
    private Integer houseDelete;

    /** 乐观锁版本号 */
    @Excel(name = "乐观锁版本号")
    private Long revision;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createdBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 更新人 */
    @Excel(name = "更新人")
    private String updatedBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedTime;

    /** 房主电话 */
    @Excel(name = "房主电话")
    private Long ownerPhone;

    /** 合同id */
    @Excel(name = "合同id")
    private Integer contractId;

    /** 预留字段3 */
    @Excel(name = "预留字段3")
    private String reservedOne;

    public void setHouseId(Long houseId) 
    {
        this.houseId = houseId;
    }

    public Long getHouseId() 
    {
        return houseId;
    }
    public void setHouseName(String houseName) 
    {
        this.houseName = houseName;
    }

    public String getHouseName() 
    {
        return houseName;
    }
    public void setHousePrice(BigDecimal housePrice) 
    {
        this.housePrice = housePrice;
    }

    public BigDecimal getHousePrice() 
    {
        return housePrice;
    }
    public void setHouseType(String houseType) 
    {
        this.houseType = houseType;
    }

    public String getHouseType() 
    {
        return houseType;
    }
    public void setHouseTypes(String houseTypes) 
    {
        this.houseTypes = houseTypes;
    }

    public String getHouseTypes() 
    {
        return houseTypes;
    }
    public void setHouseArea(BigDecimal houseArea) 
    {
        this.houseArea = houseArea;
    }

    public BigDecimal getHouseArea() 
    {
        return houseArea;
    }
    public void setPlotId(Long plotId) 
    {
        this.plotId = plotId;
    }

    public Long getPlotId() 
    {
        return plotId;
    }
    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }
    public void setHouseStatus(String houseStatus) 
    {
        this.houseStatus = houseStatus;
    }

    public String getHouseStatus() 
    {
        return houseStatus;
    }
    public void setOwnerId(Integer ownerId) 
    {
        this.ownerId = ownerId;
    }

    public Integer getOwnerId() 
    {
        return ownerId;
    }
    public void setIntroduce(String introduce) 
    {
        this.introduce = introduce;
    }

    public String getIntroduce() 
    {
        return introduce;
    }
    public void setFacilities(String facilities) 
    {
        this.facilities = facilities;
    }

    public String getFacilities() 
    {
        return facilities;
    }
    public void setAreaCode(String areaCode) 
    {
        this.areaCode = areaCode;
    }

    public String getAreaCode() 
    {
        return areaCode;
    }
    public void setRentStartDate(Date rentStartDate) 
    {
        this.rentStartDate = rentStartDate;
    }

    public Date getRentStartDate() 
    {
        return rentStartDate;
    }
    public void setRentEndDate(Date rentEndDate) 
    {
        this.rentEndDate = rentEndDate;
    }

    public Date getRentEndDate() 
    {
        return rentEndDate;
    }
    public void setPreviewImages(String previewImages) 
    {
        this.previewImages = previewImages;
    }

    public String getPreviewImages() 
    {
        return previewImages;
    }
    public void setSortType(String sortType) 
    {
        this.sortType = sortType;
    }

    public String getSortType() 
    {
        return sortType;
    }
    public void setDistance(BigDecimal distance) 
    {
        this.distance = distance;
    }

    public BigDecimal getDistance() 
    {
        return distance;
    }
    public void setFloorRoomNumber(String floorRoomNumber) 
    {
        this.floorRoomNumber = floorRoomNumber;
    }

    public String getFloorRoomNumber() 
    {
        return floorRoomNumber;
    }
    public void setRentAveragePrice(BigDecimal rentAveragePrice) 
    {
        this.rentAveragePrice = rentAveragePrice;
    }

    public BigDecimal getRentAveragePrice() 
    {
        return rentAveragePrice;
    }
    public void setPurchasePrice(BigDecimal purchasePrice) 
    {
        this.purchasePrice = purchasePrice;
    }

    public BigDecimal getPurchasePrice() 
    {
        return purchasePrice;
    }
    public void setShopRentPrice(BigDecimal shopRentPrice) 
    {
        this.shopRentPrice = shopRentPrice;
    }

    public BigDecimal getShopRentPrice() 
    {
        return shopRentPrice;
    }
    public void setHouseDelete(Integer houseDelete) 
    {
        this.houseDelete = houseDelete;
    }

    public Integer getHouseDelete() 
    {
        return houseDelete;
    }
    public void setRevision(Long revision) 
    {
        this.revision = revision;
    }

    public Long getRevision() 
    {
        return revision;
    }
    public void setCreatedBy(String createdBy) 
    {
        this.createdBy = createdBy;
    }

    public String getCreatedBy() 
    {
        return createdBy;
    }
    public void setCreatedTime(Date createdTime) 
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime() 
    {
        return createdTime;
    }
    public void setUpdatedBy(String updatedBy) 
    {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy() 
    {
        return updatedBy;
    }
    public void setUpdatedTime(Date updatedTime) 
    {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() 
    {
        return updatedTime;
    }
    public void setOwnerPhone(Long ownerPhone) 
    {
        this.ownerPhone = ownerPhone;
    }

    public Long getOwnerPhone() 
    {
        return ownerPhone;
    }
    public void setContractId(Integer contractId) 
    {
        this.contractId = contractId;
    }

    public Integer getContractId() 
    {
        return contractId;
    }
    public void setReservedOne(String reservedOne) 
    {
        this.reservedOne = reservedOne;
    }

    public String getReservedOne() 
    {
        return reservedOne;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("houseId", getHouseId())
            .append("houseName", getHouseName())
            .append("housePrice", getHousePrice())
            .append("houseType", getHouseType())
            .append("houseTypes", getHouseTypes())
            .append("houseArea", getHouseArea())
            .append("plotId", getPlotId())
            .append("address", getAddress())
            .append("houseStatus", getHouseStatus())
            .append("ownerId", getOwnerId())
            .append("introduce", getIntroduce())
            .append("facilities", getFacilities())
            .append("areaCode", getAreaCode())
            .append("rentStartDate", getRentStartDate())
            .append("rentEndDate", getRentEndDate())
            .append("previewImages", getPreviewImages())
            .append("sortType", getSortType())
            .append("distance", getDistance())
            .append("floorRoomNumber", getFloorRoomNumber())
            .append("rentAveragePrice", getRentAveragePrice())
            .append("purchasePrice", getPurchasePrice())
            .append("shopRentPrice", getShopRentPrice())
            .append("houseDelete", getHouseDelete())
            .append("revision", getRevision())
            .append("createdBy", getCreatedBy())
            .append("createdTime", getCreatedTime())
            .append("updatedBy", getUpdatedBy())
            .append("updatedTime", getUpdatedTime())
            .append("ownerPhone", getOwnerPhone())
            .append("contractId", getContractId())
            .append("reservedOne", getReservedOne())
            .toString();
    }
}
